use serde::Deserialize;

#[derive(Deserialize)]
#[serde(rename_all(deserialize = "kebab-case"))]
pub struct AuthConfig {
    /// pc端过期时间
    sys_expire: Option<u64>,
    /// app端过期时间
    app_expire: Option<u64>,
    /// 白名单
    #[serde(default)]
    white_list: Vec<String>,
}

impl Default for AuthConfig {
    fn default() -> Self {
        Self {
            sys_expire: None,
            app_expire: None,
            white_list: Vec::new(),
        }
    }
}

impl AuthConfig {
    
    pub fn sys_expire(&self) -> u64 {
        // 30分钟
        self.sys_expire.unwrap_or(30 * 60)
    }

    pub fn app_expire(&self) -> u64 {
        // 30天
        self.app_expire.unwrap_or(30 * 24 * 60 * 60)
    }

    pub fn white_list(&self) -> &Vec<String> {
        &self.white_list
    }
}
